﻿#include <windows.h>
#include "src/detours.h"
#include <iostream>


// 原始的 MessageBoxW 函数指针
int (WINAPI* TrueMessageBoxW)(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType) = MessageBoxW;

// 自定义的 MessageBoxW 函数
int WINAPI MyMessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType)
{
    // 修改传入的消息文本
    return TrueMessageBoxW(hWnd, L"Hooked Message!", lpCaption, uType);
}

int main()
{
    // 启动 Detour 事务
    DetourTransactionBegin();
    DetourUpdateThread(GetCurrentThread());

    // 拦截 MessageBoxW 函数
    DetourAttach(&(PVOID&)TrueMessageBoxW, MyMessageBoxW);

    // 提交 Detour 事务
    DetourTransactionCommit();

    // 调用 MessageBoxW，观察结果
    MessageBoxW(NULL, L"Original Message", L"Detours Demo", MB_OK);

    // 关闭 Detour 事务（恢复原始函数）
    DetourTransactionBegin();
    DetourUpdateThread(GetCurrentThread());
    DetourDetach(&(PVOID&)TrueMessageBoxW, MyMessageBoxW);
    DetourTransactionCommit();

    std::cout << "Hooking complete!" << std::endl;
    return 0;
}
